package framework;

import java.util.Map;

/**
 * The main purpose of the visualization plugin is so that the user can
 * associate each defined State with an arbitrary symbol (a custom feature).
 * 
 * @author jtumarki, ntibrewa, shuaihan, wesleyk
 * 
 */
public interface VisualizationPlugin {

	/**
	 * The mapStatetoVisual method creates a Map with a specific State type as
	 * key and a Visual object as a value, so that the user can easily define
	 * and access a mapping of states to symbols
	 * 
	 * @param states
	 *            The various states of the automaton
	 * @return mapping of state to visual
	 */
	public Map<String, Visual> mapStateToVisual(State[] states);

	/**
	 * Given a state, returns the relevant visual object associated to it
	 * 
	 * @param s
	 *            The state that the visual that is returned corresponds to
	 * @return The Visual corresponding to State s
	 */
	public Visual getVisual(State s);
}
